/*
 * GAdminCmdStatus.java
 * Created on 4 oct. 2008
 *
 * Glacéo Internet Platform
 * http://sourceforge.net/projects/chm/
 *
 * Copyright (c) 2005-2008, Jens and Jan Janke (VirtualHockey Project)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.hockeo.vhadmin;

import com.hockeo.vhbase.error.GException;

/**
 * Reverses the last forward action and moves one step back in the current season.
 *
 * @version $Id$
 * @author jjanke
 */
public class GAdminCmdReset extends GAbstractAdminCommand
{
  public void execute( String[] strArgs ) throws GException
  {
    if ( strArgs.length < 2 )
    {
      showUsageHelp();
      return;
    }

    if ( strArgs[1].equals( "season" ) )
      resetSeason();
    else if ( strArgs[1].equals( "all" ) )
      resetAllSeasons();
    else
      showUsageHelp();
  }

  private void resetSeason() throws GException
  {
    System.out.println( "This command resets the current season." );
    if ( !shouldProceed() )
      return;

    System.out.println( "Start resetting season..." );
    getSeasonServiceAdapter().resetCurrentSeason();
    System.out.println( "Finished resetting the whole season." );
  }

  private void resetAllSeasons() throws GException
  {
    System.out.println( "This command resets all seasons and is not reversible." );
    if ( !shouldProceed() )
      return;

    System.out.println( "Resetting all seasons..." );
    getSeasonServiceAdapter().resetAll();
    System.out.println( "Finished resetting all seasons." );
  }

  public String getName()
  {
    return "Reset";
  }

  public String getShortCut()
  {
    return "reset";
  }

  public String getShortDesc()
  {
    return "resets either the current season or all seasons";
  }

  @Override
  public void showUsageHelp()
  {
    System.out.println( "Command syntax is wrong." );
    System.out.println( "Usage: " + getShortCut() + " [season|all]" );
  }
}
